package cn.edu.njnu.opengmpback.common.exception;


import cn.edu.njnu.opengmpback.common.enums.ResultEnum;


public class MyException extends RuntimeException  {
    private Integer code;

    public MyException(ResultEnum resultEnum) {
        super(resultEnum.getMsg());
        this.code = resultEnum.getCode();
    }


    public MyException(String msg) {
        super(msg);
        this.code = -99999;
    }

    public Integer getCode() {
        return code;
    }

    public static MyException noObject(){
        return new MyException(ResultEnum.NO_OBJECT);
    }

    public static MyException existObject(){
        return new MyException(ResultEnum.EXISTS_OBJECT);
    }
}


// MyException 的核心作用是：
// 标准化业务错误: 将所有业务逻辑错误（如"用户不存在"、"权限不足"）都统一成 MyException。
// 携带更多信息: 除了错误消息，还携带了一个错误代码 code，方便前端根据代码做不同的处理（比如 401 就跳转到登录页）。
// 解耦业务逻辑与错误处理: Service 层只管抛出业务异常，Controller 层保持干净，由全局异常处理器统一负责将异常转换成对用户友好的 JsonResult。